#ifndef __CLIENT_H__
#define __CLIENT_H__

#include "func.h"
// #include "conio.h"

#define BUFFSIZE 1024
#define _100M 104857600
#define _10M  10485760
#define _1M   1048576

//定义命令分析的返回值
#define _CDDIR 1
#define _LSDIR 2
#define _MKDIR 3
#define _RMFILE 4
#define _PWDDIR 5
#define _GETFILE 6
#define _PUTFILE 7

//小火车
typedef struct Train_s{
    int lenth;
    char buf[BUFFSIZE];
}Train_t;

//上传文件
int SendFile(char* srcName, char* destName, int peerfd);
int Sendn(int peerFd, void* buf, int size);
int FileExist(char*, char*, char*);

//判断文件是否存在，并设标志位fileExist
//如果存在则向服务器发送相关信息，不存在则返回-1
int CheckExist(char* , char*);

// 监视输入
int WatchInput(char *);

//下载文件
int RecvFile(int connFd, char* destPath);
int pathSepa(char*, char*, char*);

//用户注册登录
int Register(int);
//检查用户名信息
int CheckAccount(Train_t train, int peerFd, int flag);
//检查密码信息
int CheckPwd(Train_t train, int peerFd, int flag);

// 连接服务器
int LinkServer(int , char*, char*);
//命令解析
int CommandAnalyse(char*, char*);

// 根据命令执行相应操作
int CommAct(int clientFd, int ret, char* command, char* srcName, char* destName);


//接收服务器处理命令后返回的消息
int RecvFlagAndMsg(int, char*);
int RecvFlagOnly(int, char*);

//生成md5码
#define MD5_DIGEST_LENTH 16
int get_file_md5(const char *, char*);

#endif
